Zpristupneni property proceduralniho typu
Otázka od: Martin Burle
3. 12. 2003 11:32
Ahoj, mam v komponente spoustu vlastnosti, a aby v tom byl trochu poradek,
rozhodl jsem se soustredit souvisejici do jedne agregovane (snad to rikam
spravne) property. Udelal jsem si objekt, ktery drzi nejake property, vcetne
jedne proceduralniho typu:
TCanEditProps = class(TPersistent)
private
FcanEditProc: T FcanEditProc;
...
published
property CanEditProc: TCanEditProc read FcanEditProc write
FcanEditProc;
end;
V komponente jsem pridal novou property
property CanEditProps: TcanEditprops ....
a funguje to spravne, jen nejak nemuzu prijit na to, jak dosahnout toho, aby
byla v property editoru dostupna i ta procedurani property v eventech. Pokud
tu proceduralni property dam primo do hlavni komponenty, je to OK.
Diky za kazde nakopnuti,
MB
Odpovedá: Bronislav Klucka
3. 12. 2003 15:27
ne, ze bych tomu zcela rozumel, co's napsal, ale mas ji v published sekci
definice typu?
Brona
> -----Original Message-----
> From: delphi-l-owner@clexpert.cz
> [mailto:delphi-l-owner@clexpert.cz]On Behalf Of Martin Burle
> Sent: Wednesday, December 03, 2003 11:23 AM
> To: delphi-l@clexpert.cz
> Subject: Zpristupneni property proceduralniho typu
>
>
> Ahoj, mam v komponente spoustu vlastnosti, a aby v tom byl trochu poradek,
> rozhodl jsem se soustredit souvisejici do jedne agregovane (snad to rikam
> spravne) property. Udelal jsem si objekt, ktery drzi nejake
> property, vcetne
> jedne proceduralniho typu:
>
> TCanEditProps = class(TPersistent)
> private
> FcanEditProc: T FcanEditProc;
> ...
> published
> property CanEditProc: TCanEditProc read FcanEditProc write
> FcanEditProc;
> end;
>
> V komponente jsem pridal novou property
>
> property CanEditProps: TcanEditprops ....
>
> a funguje to spravne, jen nejak nemuzu prijit na to, jak
> dosahnout toho, aby
> byla v property editoru dostupna i ta procedurani property v
> eventech. Pokud
> tu proceduralni property dam primo do hlavni komponenty, je to OK.
>
> Diky za kazde nakopnuti,
>
> MB
>
>
>
Odpovedá: Bronislav Klucka
3. 12. 2003 15:55
jeste jsem zapomel, mas definovano:
type
TCanEditProc=procedur OF OBJECT;
???
Brona
> -----Original Message-----
> From: delphi-l-owner@clexpert.cz
> [mailto:delphi-l-owner@clexpert.cz]On Behalf Of Martin Burle
> Sent: Wednesday, December 03, 2003 11:23 AM
> To: delphi-l@clexpert.cz
> Subject: Zpristupneni property proceduralniho typu
>
>
> Ahoj, mam v komponente spoustu vlastnosti, a aby v tom byl trochu poradek,
> rozhodl jsem se soustredit souvisejici do jedne agregovane (snad to rikam
> spravne) property. Udelal jsem si objekt, ktery drzi nejake
> property, vcetne
> jedne proceduralniho typu:
>
> TCanEditProps = class(TPersistent)
> private
> FcanEditProc: T FcanEditProc;
> ...
> published
> property CanEditProc: TCanEditProc read FcanEditProc write
> FcanEditProc;
> end;
>
> V komponente jsem pridal novou property
>
> property CanEditProps: TcanEditprops ....
>
> a funguje to spravne, jen nejak nemuzu prijit na to, jak
> dosahnout toho, aby
> byla v property editoru dostupna i ta procedurani property v
> eventech. Pokud
> tu proceduralni property dam primo do hlavni komponenty, je to OK.
>
> Diky za kazde nakopnuti,
>
> MB
>
>
>
Odpovedá: Martin Burle
3. 12. 2003 17:12
> ne, ze bych tomu zcela rozumel, co's napsal, ale mas ji v published sekci
> definice typu?
Ano,
Tohle je objekt, kteri "drzi" pribuzne property a sam je jednou z properties
"vetsiho" objektu ci komponenty (potomka datasetu). V puvodni zprave jsem
vynechal deklaraci toho proceduralniho typu, takze ted podrobneji:
type
TcanEditProc = procedure(var blablabla; var blabla atd.) oj object;
TCanEditProps = class(TPersistent)
private
FcanEditProc: T FcanEditProc;
...
published
property nejakyString: String ....
property CanEditProc: TCanEditProc read FcanEditProc write
FcanEditProc;
end;
//hlavni objekt
TmujDataSet = class(TdataSet)
private
FcanEditProps: TcanEditProps;
....
published
property CanEditProps: TcanEditProps read FcanEditProps write
FcanEditProps;
V property editoru vidim agregovanou property CanEditProps, po rozkliknuti
vsechny jeji property jako je nejakyString, krome CanEditproc, ktera ma
pochopitelne byt mezi Eventy (tam bych cekal take CanEditProps s +). Pomocny
CanEditprops se samozrejme vytvari a rusi v hlavnim objektu.
Kdyz to ale napisu bez pomocneho objektu, tj takto nejak:
TmujDataSet = class(TdataSet)
private
FcanEditProc: TcanEditProc;
....
published
property CanEditProc: TCanEditProc read FcanEditProc write FcanEditProc,
tak je novy event na svem miste...
MB
>
>
> Brona
>
> > -----Original Message-----
> > From: delphi-l-owner@clexpert.cz
> > [mailto:delphi-l-owner@clexpert.cz]On Behalf Of Martin Burle
> > Sent: Wednesday, December 03, 2003 11:23 AM
> > To: delphi-l@clexpert.cz
> > Subject: Zpristupneni property proceduralniho typu
> >
> >
> > Ahoj, mam v komponente spoustu vlastnosti, a aby v tom byl trochu
poradek,
> > rozhodl jsem se soustredit souvisejici do jedne agregovane (snad to
rikam
> > spravne) property. Udelal jsem si objekt, ktery drzi nejake
> > property, vcetne
> > jedne proceduralniho typu:
> >
> > TCanEditProps = class(TPersistent)
> > private
> > FcanEditProc: T FcanEditProc;
> > ...
> > published
> > property CanEditProc: TCanEditProc read FcanEditProc write
> > FcanEditProc;
> > end;
> >
> > V komponente jsem pridal novou property
> >
> > property CanEditProps: TcanEditprops ....
> >
> > a funguje to spravne, jen nejak nemuzu prijit na to, jak
> > dosahnout toho, aby
> > byla v property editoru dostupna i ta procedurani property v
> > eventech. Pokud
> > tu proceduralni property dam primo do hlavni komponenty, je to OK.
> >
> > Diky za kazde nakopnuti,
> >
> > MB
> >
> >
> >
>
>
>
>
Odpovedá: delphin@post.cz
3. 12. 2003 19:27
Nevim, jestli jsem to pochopil spravne, ale mozna pomuze:
1) Zaregistrovat i ten objekt TCanEditProps, napriklad pomoci
RegisterNoIcon.
2) Pouzit SetSubComponent
----- Original Message -----
From: "Martin Burle" <mburle2@volny.cz>
To: <delphi-l@clexpert.cz>
Sent: Wednesday, December 03, 2003 11:23 AM
Subject: Zpristupneni property proceduralniho typu
> Ahoj, mam v komponente spoustu vlastnosti, a aby v tom byl trochu poradek,
> rozhodl jsem se soustredit souvisejici do jedne agregovane (snad to rikam
> spravne) property. Udelal jsem si objekt, ktery drzi nejake property,
vcetne
> jedne proceduralniho typu:
>
> TCanEditProps = class(TPersistent)
> private
> FcanEditProc: T FcanEditProc;
> ...
> published
> property CanEditProc: TCanEditProc read FcanEditProc write
> FcanEditProc;
> end;
>
> V komponente jsem pridal novou property
>
> property CanEditProps: TcanEditprops ....
>
> a funguje to spravne, jen nejak nemuzu prijit na to, jak dosahnout toho,
aby
> byla v property editoru dostupna i ta procedurani property v eventech.
Pokud
> tu proceduralni property dam primo do hlavni komponenty, je to OK.
>
> Diky za kazde nakopnuti,
>
> MB
>
>
>
>
Odpovedá: Martin Burle
5. 12. 2003 11:43
> 2) Pouzit SetSubComponent
Diky, toto pomohlo. Pro pripad, ze by to nekoho zajimalo: Jakmile je potreba
v komponente agregovat udalosti/zobrazit udalosti subkomponenty, musi se
pouzit TComponent, nestaci TPersistent.
MB